AWS Systems Manager Parameter Storeでパラメータを登録し、AWS CLIとAWS SDK for Python (Boto3) からそれぞれ取得してみた
AWS環境にパラメータを登録したい
おのやんです。
みなさん、AWS環境にURLやアクセストークンなどのパラメータ情報を登録したいと思ったことはありませんか?私はあります。
AWS環境にパラメータ情報を登録する方法として、AWS Secrets Manager(以下、Secrets Manager)とAWS Systems Manager Parameter Store(以下、SSM Parameter Store)の2つをよく採用します。
パラメータを登録するという機能においては、これら2つのサービス間でそう大差ないですが、例えば「パラメータを自動ローテーションする必要がない」といった要件の場合には、料金のかからないSSM Parameter Storeを採用するケースがあります。
こういった際に、具体的にどういうプロセスでパラメータを登録・取得するのかを今回まとめましたので、そちらの内容を紹介します。
SSM Parameter Storeへのパラメータ登録
今回は、AWSのマネジメントコンソールからパラメータを登録します。
まずAWS Systems Manager(以下、SSM)のページに移動し、左側の「パラメータストア」に移動してパラメータの作成を押下します。
パラメータ作成画面では、SSM Parameter Store上で管理するパラメータ名と、それに対応する値を設定できます。今回は他のサービスのAPIを実行するためのエンドポイントを設定する想定で進めます。
パラメータの作成が正常に行われた場合、こちらのようにパラメータ一覧画面にパラメータが追加されます。これで、パラメータ追加作業は完了です。
AWS CLIからパラメータを取得
このパラメータは、AWS CLIから取得できます。
$ aws ssm get-parameter --name "/sample-app/log-api/dev/endpoint"
{
"Parameter": {
"Name": "/sample-app/log-api/dev/endpoint",
"Type": "String",
"Value": "https://example.com/v1/logs",
"Version": 1,
"LastModifiedDate": "2024-09-30T00:00:00.000000+00:00",
"ARN": "arn:aws:ssm:ap-northeast-1:<account_id>:parameter/sample-app/log-api/dev/endpoint",
"DataType": "text"
}
}
SSM Parameter Storeに関するコマンドは、他にはこちらのドキュメントにまとまっています。
AWS SDK for Python (Boto3) からパラメータを取得
同様に、AWS SDK for Python (以下、Boto3)からもパラメータを取得できます。
import boto3
def get_ssm_parameter(parameter_name, with_decryption=True):
# SSM clientを作成
ssm = boto3.client("ssm")
# パラメータを取得
response = ssm.get_parameter(
Name=parameter_name,
WithDecryption=with_decryption
)
# パラメータの値を返す
return response["Parameter"]["Value"]
if __name__ == "__main__":
parameter_name = "/my/parameter"
value = get_ssm_parameter(parameter_name)
if value:
print(f"パラメータ '{parameter_name}' の値: {value}")
こちらの実行結果はこんな感じになります。
$ python3 sample.py
パラメータ '/sample-app/log-api/dev/endpoint' の値: https://example.com/v1/logs
Boto3の裏側はAWS CLIが実行されているので、できることは基本は同じです。Boto3での記法に関しては、こちらも参考にしてください。
シークレット値をAWS上で管理できる
SSM Parameter Storeでは、URLやアクセストークンなどのシークレットなパラメータも管理できます。これらをAWS上で設定して、実際に取得するコマンドやコードをまとめてみました。
意外とこれらの情報がまとまっているドキュメントが少なかったので、今回まとめてみました。SSM Parameter Storeを扱う時は、ぜひ参考にしてみてください。では!